package com.zenithmind.article.feign;

import com.zenithmind.article.pojo.vo.UserVO;
import com.zenithmind.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 用户服务远程调用接口
 * 遵循接口隔离原则：只定义需要的用户服务接口
 * 遵循依赖倒置原则：依赖抽象接口而非具体实现
 * 遵循单一职责原则：专注于用户服务调用
 */
@FeignClient(name = "user-service", path = "/api/zenithMind/user", fallback = UserFeignClientFallback.class)
public interface UserFeignClient {

    /**
     * 根据ID获取用户信息
     *
     * @param id 用户ID
     * @return 用户信息
     */
    @GetMapping("/getUserById")
    Result<UserVO> getUserById(@RequestParam("userId") String id);

    /**
     * 批量获取用户信息
     *
     * @param userIds 用户ID列表，逗号分隔
     * @return 用户信息列表
     */
    @GetMapping("/getUsersByIds")
    Result<java.util.List<UserVO>> getUsersByIds(@RequestParam("userIds") String userIds);

    /**
     * 检查用户是否存在
     *
     * @param id 用户ID
     * @return 是否存在
     */
    @GetMapping("/exists")
    Result<Boolean> userExists(@RequestParam("userId") String id);
}